package com.blog.cmrpersonalblog.dto.user.response;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户详情响应DTO
 */
@Data
public class UserProfileResponse {

    /**
     * 用户基本信息
     */
    private Long userId;
    private String nickName;
    private String email;
    private String avatar;
    private String phonenumber;
    private String sex;
    private String sexName;
    private String signature;
    private LocalDateTime createTime;

    /**
     * 用户统计数据
     */
    private UserStatsInfo stats;

    /**
     * 最近发布的文章
     */
    private List<ArticleInfo> recentArticles;

    /**
     * 是否被当前用户关注
     */
    private Boolean isFollowed;

    /**
     * 用户统计信息
     */
    @Data
    public static class UserStatsInfo {
        private Integer articleCount;           // 发布文章数
        private Long totalViewCount;           // 文章总浏览量
        private Integer totalLikeCount;        // 文章总点赞数
        private Integer followerCount;         // 粉丝数
        private Integer followingCount;        // 关注数
    }

    /**
     * 文章信息
     */
    @Data
    public static class ArticleInfo {
        /**
         * 文章ID
         */
        private Long id;
        /**
         * 标题
         */
        private String title;
        /**
         * 摘要
         */
        private String summary;
        /**
         * 封面图片
         */
        private String coverImage;
        /**
         * 浏览量
         */
        private Integer viewCount;
        /**
         * 点赞数
         */
        private Integer likeCount;
        /**
         * 评论数
         */
        private Integer commentCount;
        /**
         * 收藏数
         */
        private Integer collectCount;
        /**
         * 发表时间
         */
        private LocalDateTime publishTime;
        /**
         * 分类名称
         */
        private String categoryName;
        /**
         * 文章状态
         */
        private Integer status;
        /**
         * 标签列表
         */
        private List<TagInfo> tagList;
    }

    /**
     * 标签信息
     */
    @Data
    public static class TagInfo {
        private Long id;
        private String name;
    }
}

